' Meter Test

Dim needle_arr(3)
needle_arr(0)=0
Font 1,2
Text 10,180,"Micromite 4.7 Beta3",,1,2,RGB(cyan),RGB(black)
RBox 10,10,120,50,3,RGB(yellow)
Font 1,1
Text 15,25,"Increse Value",,,,RGB(green),RGB(black)
RBox 10,70,120,50,3,RGB(yellow)
Text 15,85,"Decrese Value",,,,RGB(green),RGB(black)
MeterName$="Demo Meter"

plot_scale(230, 120, 20)
plot_needle(230,120, i, 20)

Do

If Touch(x)>=10 And Touch(x)<=120 And Touch(y)>=15 And Touch(y)<=55 Then
 Print "Increse Button"
 Print Touch(x); Touch(y)
If i<20 Then i=i+1
 plot_needle(230,120, i, 20)
RBox 10,10,120,50,3,RGB(yellow),RGB(yellow)
Do
Loop Until Touch(x)=-1 And Touch(y)=-1
RBox 10,10,120,50,3,RGB(yellow),RGB(black)
Text 15,25,"Increse Value",,,,RGB(green),RGB(black)
EndIf

If Touch(x)>=10 And Touch(x)<=120 And Touch(y)>=70 And Touch(y)<=100 Then
 Print "Decrese Button"
 Print Touch(x); Touch(y)
If i>0 Then i=i-1
 plot_needle(230,120, i, 20)
 RBox 10,70,120,50,3,RGB(yellow),RGB(yellow)
Do
Loop Until Touch(x)=-1 And Touch(y)=-1
RBox 10,70,120,50,3,RGB(yellow),RGB(black)
Text 15,85,"Decrese Value",,,,RGB(green),RGB(black)
EndIf

Loop

Sub plot_scale (center_x, center_y, max_s)
  Box center_x-84,center_y-120,center_x+84,center_y+20,1,RGB(yellow)
  Font 1
  Color RGB(white)
  For i= 0 To 20
    rads=(i-10)*Pi/40
    x2=Sin(rads)*100 + center_x
    y2=-Cos(rads)*100 + center_y
    If i Mod 4 <> 0 Then
      x1=Sin(rads)*95 + center_x
      y1=-Cos(rads)*95 + center_y
    Else
      x1=Sin(rads)*90 + center_x
      y1=-Cos(rads)*90 + center_y
      Text x2-2,y2-15,Str$(max_s*i/20) ' ,r,1,1
    EndIf
    Line x1,y1,x2,y2,1,RGB(yellow)
  Next i
  Font 1
  Color RGB(Yellow)
  Text center_x-84,center_y+25,MeterName$
End Sub

Sub plot_needle (center_x, center_y, needle_v, max_s, needle_idx)
  Local my_needle
  my_needle= needle_v * 100 / max_s
  ' needle value 0..100
  If my_needle <> needle_arr(needle_idx) Then
    Circle center_x,center_y,8,3,1,RGB(yellow),RGB(red)
    rads= (needle_arr(needle_idx)-50)*Pi/200
    x2=Sin(rads)*90 + center_x
    y2=-Cos(rads)*90 + center_y
    Line center_x,center_y,x2,y2,1,RGB(black)

    rads= (my_needle-50)*Pi/200
    x2=Sin(rads)*90 + center_x
    y2=-Cos(rads)*90 + center_y
    Line center_x,center_y,x2,y2,1,RGB(Red)
    Color Red, Black
'    Font #2
'    Text center_x+15,center_y-9,Str$(needle_v),,,RGB(yellow),RGB(black)
  EndIf
  needle_arr(needle_idx) = my_needle
End Sub                                                                              